package com.demo.search.service;

import java.util.Map;

import com.demo.search.support.PageResultSupport;

/**
 * 以xml文件为基础的查询服务
 * <p />
 * 提供查询功能，并且返回指定对象
 * 
 * @author ryuu.kk
 */
public interface BaseXmlQueryService {

	/**
	 * 全文检索，并生成对象列表
	 * <p/> 
	 * 此方法不生成带有关键字的高亮提示信息
	 * @param templateName 模板文件名称
	 * @param params 查询参数
	 * @param clazz 生成对象类型
	 * @return PageResultSupport<T> 生成查询结果对象列表
	 */
	<T> PageResultSupport<T> queryList(String templateName, Map<String, Object> params, Class<T> clazz, int firstResult, int maxResult);
	
	/**
	 * 全文检索,并生成带有高亮提示的对象列表
	 * <p/>
	 * 前提是索引使用了TermVector.WITH_POSITIONS_OFFSETS
	 * @param templateName 模板文件名
	 * @param params 查询参数
	 * @param clazz 生成对象类型
	 * @param preColorTags 命中对象的前置tags(如&lt;i style="background-color:#ccc;"&gt;)
	 * @param postColorTags 命中对象的后置tags(如&lt;/i&gt;)
	 * @return List<T> 生成查询结果对象列表
	 */
	<T> PageResultSupport<T> queryList(String templateName, Map<String, Object> params, Class<T> clazz, int currentPage, int pageSize, String[] preColorTags, String[] postColorTags);
}
